//
// Created by alexa on 5/13/2024.
//

#ifndef ARTILLERYSYSTEM_UNITSMENU_H
#define ARTILLERYSYSTEM_UNITSMENU_H


#include "../_abstract-menu/Menu.h"

class UnitsMenu : public Menu {
private:
    UnitsService *service;

    CombatUnit *findUnit();

    void displayUnitInfo(CombatUnit *unit);

    void displayUnitsList();

    void deleteUnit(CombatUnit *unit);

    void printUnitsList(vector<CombatUnit *> list);

    void printLauncherInfo(Launcher *unit);

    void printSelfPropelledLauncherInfo(SelfPropelledLauncher *unit);

    void printMenu();

    void createUnit();

    void setCrewToUnit(CombatUnit *unit);

    void removeCrewFromUnit(CombatUnit *unit);

    void setMissileToUnit(CombatUnit *unit);

    void removeMissileFromUnit(CombatUnit *unit);

    void findAndDisplayUnitInfo();

    vector<Specialization> selectRequiredSpecializationsForUnit();

    void moveUnit(CombatUnit *unit);

    void setAimForUnit(CombatUnit *unit);

    void unitShoot(CombatUnit *unit);

    void unitReload(CombatUnit *unit);

public:

    UnitsMenu(i18n::Translator *t, UserInterface *ui, UnitsService *service);

    void displayMenu() override;
};


#endif //ARTILLERYSYSTEM_UNITSMENU_H
